package com.zjdiepu.www.security.sign.jwt;

import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * jwt签名工具
 * 类描述:jwt签名工具 <br/>
 * 项目名称:diepu-parent-partner <br/>
 * 类名称:JwtProvider <br/>
 * 创建人:xiongxiaotun <br/>
 * 创建时间:2017年8月21日 下午4:13:17 <br/>
 * 修改人:xiongxiaotun <br/>
 * 修改时间: 2017年8月21日 下午4:13:17 <br/>
 * 修改备注: <br/>
 * 
 * @version V1.0 <br/>
 */
public class JwtProvider {
	private static final Logger logger = LoggerFactory
			.getLogger(JwtProvider.class);

	/**
	 * 签名
	 * @author xiongxiaotun <br/>
	 * @Title sign <br/>
	 * @Description 加密 <br/>
	 * @param content json字符串
	 * @param secretKey
	 * @return
	 * @version V1.0 <br/>
	 * @throws BasePartnerException
	 */
	public static String sign(String content, String secretKey) {
		if(StringUtils.isBlank(content) || StringUtils.isBlank(secretKey)) {
			return null;
		}
		try {
			SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
			// 添加构成JWT的参数
			JwtBuilder builder = Jwts.builder().setHeaderParam("typ", "JWT")
					.setPayload(content)
					.signWith(signatureAlgorithm, secretKey.getBytes());
			// 生成加密数据
			return builder.compact();
		} catch (Exception e) {
			logger.error("jwt生成签名:content:{}.异常栈:{}", content, e);
		}
		return null;
	}
}
